Spring Boot এর মধ্যে CRUD অপারেশন

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM)
208

স্প্রিং বুট (Spring Boot) এ CRUD (Create, Read, Update, Delete) অপারেশন কার্যকরভাবে ইমপ্লিমেন্ট করা যায়। Spring Data JPA এবং Hibernate ব্যবহার করে ডাটাবেসে CRUD অপারেশন সম্পাদন করা সহজ হয়। স্প্রিং বুটে CRUD অপারেশন ইমপ্লিমেন্ট করতে নির্দিষ্ট ধাপ অনুসরণ করা হয়।


প্রয়োজনীয় ডিপেন্ডেন্সি যুক্ত করা

pom.xml ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যুক্ত করতে হবে:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

ডাটাবেস কনফিগারেশন

application.properties ফাইলে ডাটাবেস সম্পর্কিত কনফিগারেশন যুক্ত করুন:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=update

এন্টিটি ক্লাস তৈরি করা

এন্টিটি ক্লাসটি ডাটাবেস টেবিলের প্রতিনিধিত্ব করে। উদাহরণস্বরূপ, একটি Product ক্লাস তৈরি করা যেতে পারে:

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class Product {
    @Id
    private Long id;
    private String name;
    private Double price;

    // Getters and Setters
}

রেপোজিটরি ইন্টারফেস তৈরি করা

Spring Data JPA এর মাধ্যমে একটি রেপোজিটরি ইন্টারফেস তৈরি করুন। এটি ডাটাবেস অপারেশনের জন্য বিভিন্ন বিল্ট-ইন মেথড সরবরাহ করে:

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

সার্ভিস লেয়ার তৈরি করা

ব্যবসায়িক লজিক পরিচালনার জন্য একটি সার্ভিস ক্লাস তৈরি করুন:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductService {
    @Autowired
    private ProductRepository productRepository;

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    public Product getProductById(Long id) {
        return productRepository.findById(id).orElse(null);
    }

    public Product addProduct(Product product) {
        return productRepository.save(product);
    }

    public Product updateProduct(Long id, Product updatedProduct) {
        if (productRepository.existsById(id)) {
            updatedProduct.setId(id);
            return productRepository.save(updatedProduct);
        }
        return null;
    }

    public void deleteProduct(Long id) {
        productRepository.deleteById(id);
    }
}

কন্ট্রোলার তৈরি করা

RESTful API রুটের জন্য একটি কন্ট্রোলার তৈরি করুন:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/products")
public class ProductController {
    @Autowired
    private ProductService productService;

    @GetMapping
    public List<Product> getAllProducts() {
        return productService.getAllProducts();
    }

    @GetMapping("/{id}")
    public Product getProductById(@PathVariable Long id) {
        return productService.getProductById(id);
    }

    @PostMapping
    public Product addProduct(@RequestBody Product product) {
        return productService.addProduct(product);
    }

    @PutMapping("/{id}")
    public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
        return productService.updateProduct(id, product);
    }

    @DeleteMapping("/{id}")
    public void deleteProduct(@PathVariable Long id) {
        productService.deleteProduct(id);
    }
}

CRUD অপারেশন পরীক্ষার উদাহরণ

Create (POST)

Endpoint: /products
Method: POST
Body:

{
  "id": 1,
  "name": "Laptop",
  "price": 75000
}

Read (GET)

Endpoint: /products
Method: GET

Endpoint: /products/1
Method: GET

Update (PUT)

Endpoint: /products/1
Method: PUT
Body:

{
  "name": "Laptop Pro",
  "price": 95000
}

Delete (DELETE)

Endpoint: /products/1
Method: DELETE


সারাংশ

Spring Boot এর মাধ্যমে CRUD অপারেশন সহজে ইমপ্লিমেন্ট করা যায়। Spring Data JPA, Hibernate এবং Spring Boot এর সমন্বয়ে এন্টারপ্রাইজ-লেভেলের ডাটাবেস অপারেশন দক্ষতার সাথে সম্পন্ন করা যায়। এটি REST API তৈরি করার জন্য একটি আদর্শ সমাধান।

Content added By

Spring Boot এবং Spring Data JPA ব্যবহার করে CRUD অপারেশন (Create, Read, Update, Delete)

183

Spring Boot এবং Spring Data JPA একটি শক্তিশালী কম্বিনেশন যা ডেটাবেস ম্যানেজমেন্টকে সহজ ও কার্যকর করে। CRUD অপারেশন অর্থাৎ Create, Read, Update, Delete-এর মাধ্যমে ডেটাবেসে ডেটা পরিচালনা করা হয়। Spring Boot এবং Spring Data JPA ব্যবহার করে সহজেই CRUD অপারেশন সম্পন্ন করা যায়।


প্রকল্পের প্রস্তুতি

Maven ডিপেনডেন্সি যোগ করা

প্রথমে আপনার pom.xml ফাইলটি আপডেট করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

application.properties ফাইল কনফিগার করা

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update

Entity ক্লাস তৈরি করা

ডেটাবেসে একটি টেবিল তৈরি করতে Entity ক্লাস ব্যবহার করা হয়।

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;

    // Getters and Setters
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

Repository ইন্টারফেস তৈরি করা

Spring Data JPA ব্যবহার করে JpaRepository ইন্টারফেসটি এক্সটেন্ড করে CRUD অপারেশন সহজেই করা যায়।

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

Service ক্লাস তৈরি করা (ঐচ্ছিক)

সার্ভিস স্তর (Service Layer) ভালো প্র্যাকটিস হিসেবে ব্যবহৃত হয়।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;

@Service
public class ProductService {

    @Autowired
    private ProductRepository repository;

    public List<Product> getAllProducts() {
        return repository.findAll();
    }

    public Optional<Product> getProductById(Long id) {
        return repository.findById(id);
    }

    public Product saveProduct(Product product) {
        return repository.save(product);
    }

    public void deleteProduct(Long id) {
        repository.deleteById(id);
    }
}

Controller ক্লাস তৈরি করা

Controller ক্লাস ব্যবহার করে CRUD অপারেশনের API তৈরি করা হয়।

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductService service;

    // Create Product
    @PostMapping
    public Product createProduct(@RequestBody Product product) {
        return service.saveProduct(product);
    }

    // Read All Products
    @GetMapping
    public List<Product> getAllProducts() {
        return service.getAllProducts();
    }

    // Read Product by ID
    @GetMapping("/{id}")
    public Optional<Product> getProductById(@PathVariable Long id) {
        return service.getProductById(id);
    }

    // Update Product
    @PutMapping("/{id}")
    public Product updateProduct(@PathVariable Long id, @RequestBody Product product) {
        product.setId(id);
        return service.saveProduct(product);
    }

    // Delete Product
    @DeleteMapping("/{id}")
    public String deleteProduct(@PathVariable Long id) {
        service.deleteProduct(id);
        return "Product deleted with id: " + id;
    }
}

অ্যাপ্লিকেশন চালানো এবং API পরীক্ষা করা

Spring Boot অ্যাপ্লিকেশন চালানোর জন্য @SpringBootApplication এনোটেশন ব্যবহার করে মেইন ক্লাস তৈরি করুন।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootCrudApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootCrudApplication.class, args);
    }
}

Spring Boot চালু করার পর Postman বা অন্য কোনো API টেস্টিং টুল ব্যবহার করে নিচের এন্ডপয়েন্টগুলো পরীক্ষা করতে পারেন:

  • POST: /products (নতুন প্রোডাক্ট যোগ করুন)
  • GET: /products (সমস্ত প্রোডাক্ট দেখুন)
  • GET: /products/{id} (নির্দিষ্ট প্রোডাক্ট দেখুন)
  • PUT: /products/{id} (প্রোডাক্ট আপডেট করুন)
  • DELETE: /products/{id} (প্রোডাক্ট মুছে ফেলুন)

সারাংশ

Spring Boot এবং Spring Data JPA ব্যবহার করে CRUD অপারেশন তৈরি করা খুবই সহজ এবং কার্যকর। এর মাধ্যমে জাভা ডেভেলপাররা ডেটাবেস পরিচালনার জটিলতা থেকে মুক্তি পেয়ে দ্রুত অ্যাপ্লিকেশন তৈরি করতে পারেন।

Content added By

JpaRepository এর save(), findById(), findAll(), deleteById() মেথডের ব্যবহার

189

JpaRepository হলো Spring Data JPA এর একটি ইন্টারফেস, যা ডেটাবেসের সাধারণ CRUD (Create, Read, Update, Delete) অপারেশনগুলো সহজে সম্পন্ন করার জন্য ব্যবহৃত হয়। এটি Hibernate এর উপর ভিত্তি করে কাজ করে এবং ডেটাবেসের সঙ্গে সরাসরি ইন্টিগ্রেশন নিশ্চিত করে।

JpaRepository এর গুরুত্বপূর্ণ মেথডগুলোর মধ্যে save(), findById(), findAll(), এবং deleteById() উল্লেখযোগ্য।


save() মেথড

save() মেথড ডেটাবেসে নতুন ডেটা সঞ্চয় (Insert) করতে বা বিদ্যমান ডেটা আপডেট করতে ব্যবহৃত হয়। এটি একটি Object প্যারামিটার হিসেবে গ্রহণ করে এবং ডেটাবেসে পরিবর্তনগুলো সংরক্ষণ করে।

উদাহরণ:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public Product saveProduct(Product product) {
        return productRepository.save(product); // ডেটা সঞ্চয় বা আপডেট
    }
}

নতুন ডেটা সঞ্চয়:

Product product = new Product();
product.setName("Laptop");
product.setPrice(80000.00);
productService.saveProduct(product);

findById() মেথড

findById() মেথড একটি নির্দিষ্ট id এর ভিত্তিতে ডেটা খুঁজে বের করে। এটি Optional<T> টাইপের রিটার্ন করে, যা নাল (null) ডেটা পরিচালনায় সাহায্য করে।

উদাহরণ:

public Product getProductById(Long id) {
    return productRepository.findById(id)
                             .orElseThrow(() -> new RuntimeException("Product not found")); // নির্দিষ্ট ডেটা খুঁজে বের করা
}

ডেটা ফেচ:

Product product = productService.getProductById(1L);
System.out.println(product.getName());

findAll() মেথড

findAll() মেথড ডেটাবেসের সমস্ত ডেটা রিটার্ন করে। এটি সাধারণত একটি List<T> টাইপ রিটার্ন করে।

উদাহরণ:

public List<Product> getAllProducts() {
    return productRepository.findAll(); // সমস্ত ডেটা রিটার্ন
}

সমস্ত ডেটা প্রিন্ট করা:

List<Product> products = productService.getAllProducts();
products.forEach(product -> System.out.println(product.getName()));

deleteById() মেথড

deleteById() মেথড একটি নির্দিষ্ট id এর ভিত্তিতে ডেটা ডিলিট করতে ব্যবহৃত হয়।

উদাহরণ:

public void deleteProductById(Long id) {
    productRepository.deleteById(id); // ডেটা ডিলিট
}

ডেটা ডিলিট:

productService.deleteProductById(1L);
System.out.println("Product deleted successfully.");

উদাহরণ প্রজেক্ট

Entity ক্লাস:

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Double price;

    // Getters and Setters
}

Repository ইন্টারফেস:

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

Service ক্লাস:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public Product saveProduct(Product product) {
        return productRepository.save(product);
    }

    public Product getProductById(Long id) {
        return productRepository.findById(id)
                                 .orElseThrow(() -> new RuntimeException("Product not found"));
    }

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    public void deleteProductById(Long id) {
        productRepository.deleteById(id);
    }
}

Controller ক্লাস:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductService productService;

    @PostMapping
    public Product createProduct(@RequestBody Product product) {
        return productService.saveProduct(product);
    }

    @GetMapping("/{id}")
    public Product getProduct(@PathVariable Long id) {
        return productService.getProductById(id);
    }

    @GetMapping
    public List<Product> getAllProducts() {
        return productService.getAllProducts();
    }

    @DeleteMapping("/{id}")
    public String deleteProduct(@PathVariable Long id) {
        productService.deleteProductById(id);
        return "Product deleted successfully.";
    }
}

সারাংশ

JpaRepository এর save(), findById(), findAll(), এবং deleteById() মেথডগুলো স্প্রিং বুটে ডেটাবেস অপারেশন সহজ করে। এগুলোর মাধ্যমে ডেটা সঞ্চয়, আপডেট, রিড এবং ডিলিট করা যায়। এই মেথডগুলো ব্যবহার করে অ্যাপ্লিকেশন ডেটাবেস পরিচালনায় একটি অবজেক্ট-অরিয়েন্টেড পদ্ধতি অনুসরণ করে।


Content added By

উদাহরণ সহ CRUD অপারেশন

171

Spring Boot ORM এর মাধ্যমে সহজে CRUD (Create, Read, Update, Delete) অপারেশন সম্পাদন করা যায়। এই উদাহরণে Hibernate এবং Spring Data JPA ব্যবহার করে একটি ডেটাবেসে CRUD অপারেশন বাস্তবায়ন দেখানো হয়েছে।


প্রাথমিক সেটআপ

Maven ডিপেনডেন্সি

pom.xml ফাইলে প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

ডাটাবেস কনফিগারেশন

application.properties ফাইলে ডাটাবেস কনফিগারেশন যুক্ত করুন:

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=1234
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

Entity ক্লাস তৈরি

Entity ক্লাস @Entity অ্যানোটেশন দ্বারা সংজ্ঞায়িত হয়। উদাহরণ:

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Double price;

    // Getters and Setters
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
}

Spring Data JPA Repository

Spring Data JPA রেপোজিটরি তৈরি করুন, যা ডাটাবেসে CRUD অপারেশন সহজ করে:

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

সার্ভিস লেয়ার তৈরি

ব্যবসায়িক লজিক পরিচালনার জন্য একটি সার্ভিস লেয়ার তৈরি করুন:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    // Create or Update
    public Product saveProduct(Product product) {
        return productRepository.save(product);
    }

    // Read All
    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    // Read By ID
    public Product getProductById(Long id) {
        return productRepository.findById(id).orElse(null);
    }

    // Delete
    public void deleteProduct(Long id) {
        productRepository.deleteById(id);
    }
}

REST কন্ট্রোলার তৈরি

RESTful API তৈরি করতে কন্ট্রোলার ক্লাস ব্যবহার করুন:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductService productService;

    // Create or Update Product
    @PostMapping
    public Product saveProduct(@RequestBody Product product) {
        return productService.saveProduct(product);
    }

    // Get All Products
    @GetMapping
    public List<Product> getAllProducts() {
        return productService.getAllProducts();
    }

    // Get Product By ID
    @GetMapping("/{id}")
    public Product getProductById(@PathVariable Long id) {
        return productService.getProductById(id);
    }

    // Delete Product
    @DeleteMapping("/{id}")
    public String deleteProduct(@PathVariable Long id) {
        productService.deleteProduct(id);
        return "Product deleted successfully!";
    }
}

CRUD অপারেশন API উদাহরণ

Create (POST)

URL: http://localhost:8080/products
Method: POST
Request Body:

{
  "name": "Laptop",
  "price": 75000.00
}

Read All (GET)

URL: http://localhost:8080/products
Method: GET

Read By ID (GET)

URL: http://localhost:8080/products/{id}
Method: GET

Update (POST)

URL: http://localhost:8080/products
Method: POST
Request Body:

{
  "id": 1,
  "name": "Updated Laptop",
  "price": 80000.00
}

Delete (DELETE)

URL: http://localhost:8080/products/{id}
Method: DELETE


Spring Boot এবং Hibernate ব্যবহার করে CRUD অপারেশন বাস্তবায়নের প্রক্রিয়া খুব সহজ। এই উদাহরণটি ব্যবহার করে আপনি দ্রুত ডাটাবেস-নির্ভর অ্যাপ্লিকেশন তৈরি করতে পারবেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...